#ifndef MAINDIALOG_H
#define MAINDIALOG_H

#include <QButtonGroup>
#include <QDebug>
#include <QHostAddress>
#include <QtWidgets>
#include <QTcpSocket>
#include <QMetaEnum>
#include <QDateTime>
#include "chartdialog.h"
#include "node.h"
#include "string.h"
#include "databasehelper.h"

namespace Ui {
class MainDialog;
}


class MainDialog : public QDialog
{
    Q_OBJECT

public:
    explicit MainDialog(QWidget *parent = 0);
    void setHaaSModuleVisible(bool); // 设置HaaS模块的可见性
    ~MainDialog();

private:
    Ui::MainDialog *ui;
    QButtonGroup *connectBtnGroup;
    QButtonGroup *receiveBtnGroup;
    QTcpSocket *socket = NULL;
    DatabaseHelper dbHelper;

    enum HostType
    {
        SERVER = 1,
        HAAS = 2,
        NONE = 3
    };
    void connect2Host(QString,int,HostType); // 连接到主机
    HostType tempHostType = HostType::NONE; // 连接中临时缓存的连接类型
    HostType currentHostType = HostType::NONE; // 当前连接类型

    void initialSignalSlot(); // 初始化信号槽
    void initialWidgets(); // 初始化组件

    enum MessageType
    {
        QUESTION = 1,
        INFORMATION = 2,
        WARNING = 3,
        CRITICAL = 4
    };
    void showMessage(QString msg,MessageType type); // 弹窗提醒

    ChartDialog *dialog = NULL;


private slots:
    // 连接按钮的槽函数
    void btnsConnectClickedSlot(int);
    // LED与蜂鸣器开关切换的信号槽
    void ledValueChangedSlot(int);
    void led2ValueChangedSlot(int);
    void led3ValueChangedSlot(int);
    void buzzerValueChangedSlot(int);
    // 接收数据的各个按钮点击的槽函数
    void btnsReceiveClickedSlot(int);
    void connectedSlot(); // 连接成功的槽函数
    void disconnectedSlot(); // 连接失败的槽函数
    void readyReadSlot(); // 读取信息的槽函数
};

#endif // MAINDIALOG_H
